﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WaveEngine.Extensions.ITasks
{
    public interface ITaskSet
    {
        /// <summary>
        /// Waits all.
        /// </summary>
        /// <returns></returns>
        ITask WaitAll();

        /// <summary>
        /// Waits any.
        /// </summary>
        /// <returns></returns>
        ITask WaitAny();

        /// <summary>
        /// Waits the predicate.
        /// </summary>
        /// <param name="waitingTaskPredicate">The waiting task predicate.</param>
        /// <returns></returns>
        ITask WaitPredicate(Func<bool, ITask[]> waitingTaskPredicate);
    }
}
